import { createRouter, createWebHistory } from 'vue-router'
import type { RouteRecordRaw } from 'vue-router'
import { useUserStore } from '../store/user'; // 导入 user store
import { ElMessage } from 'element-plus'
import Home from '../views/Home.vue'
import Login from '../views/Login.vue'
import Register from '../views/Register.vue'
import MovieDetail from '../views/MovieDetail.vue'
import Admin from '../views/Admin.vue'
import UserProfile from '../views/UserProfile.vue'

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    redirect: '/login' // 默认重定向到 Login
  },
  {
    path: '/home',
    name: 'Home',
    component: Home,
    meta: { requiresAuth: true } // 添加 requiresAuth 保护
  },
  {
    path: '/coming-soon',
    name: 'ComingSoon',
    component: () => import('../views/ComingSoon.vue'),
    meta: { requiresAuth: true }
  },
  {
    path: '/login',
    name: 'Login',
    component: Login
  },
  {
    path: '/register',
    name: 'Register',
    component: Register
  },
  // 添加电影详情路由
  {
    path: '/movies/:id(\\d+)', // 使用数字 id，与 API 保持一致，注意双斜杠转义
    name: 'MovieDetail',
    component: MovieDetail,
    props: true // 将路由参数 id 作为 prop 传递给组件
  },
  {
    path: '/orders',
    name: 'Orders',
    component: () => import('../views/Orders.vue'), // 指向用户订单列表
    meta: { requiresAuth: true }
  },
  // 订单详情页面已移除
  {
    path: '/profile',
    name: 'UserProfile',
    component: UserProfile,
    meta: { requiresAuth: true }
  },
  {
    path: '/seat-selection/:showtimeId(\\d+)',
    name: 'SeatSelection',
    component: () => import('../views/SeatSelection.vue'),
    meta: { requiresAuth: true },
    props: true
  },
  // 移除 /wallet
  // 移除 /book/:id
  // 移除 /cart
  {
    path: '/admin',
    name: 'Admin',
    component: Admin,
    meta: { requiresAuth: true, requiresAdmin: true } // 添加路由元信息
  },
  // 添加404路由
  {
    path: '/:pathMatch(.*)*',
    name: 'NotFound',
    component: () => import('../views/Home.vue') // 可以创建专门的404页面
  }
]

const router = createRouter({
  history: createWebHistory(), // 确保使用history模式
  routes
})

// 更新导航守卫
router.beforeEach((to, from, next) => {
  const userStore = useUserStore();
  // 在应用启动时尝试初始化用户状态（如果尚未初始化）
  // 确保 store 状态与 localStorage 同步
  if (!userStore.isLoggedIn && localStorage.getItem('token')) {
      userStore.initialize();
  }

  const requiresAuth = to.matched.some(record => record.meta.requiresAuth);
  const requiresAdmin = to.matched.some(record => record.meta.requiresAdmin);

  if (requiresAuth && !userStore.isLoggedIn) {
    // 如果需要认证但用户未登录，重定向到登录页
    ElMessage.warning('请先登录'); // 使用 ElMessage 提示
    next({ name: 'Login', query: { redirect: to.fullPath } }); // 保存目标路径以便登录后跳转回来
  } else if (requiresAdmin && !userStore.isAdmin) {
    // 如果需要管理员权限但用户不是管理员，重定向到首页
    ElMessage.error('您没有权限访问此页面');
    next({ path: '/' }); // 修复：重定向到首页
  } else {
    // 其他情况正常放行
    next();
  }
})

export default router